clc; clear;

% 读取图像（示例用cameraman）
img = imread('cameraman.tif'); 
if size(img,3) == 3
    img = rgb2gray(img);
end
img = double(img);

[M, N] = size(img);
len = M*N;

% CTBCS参数（参考前面）
r = 3.99; b = 30;
r1 = -10; b1 = -3; a = 1; b2 = 2*pi; c = 11.5;

% 初始值
x0 = 0.3; y0 = 0.5; z0 = 0.6;

% 生成混沌密钥序列
key_seq = Sequence(len, x0, y0, z0, r, b, r1, b1, a, b2, c);

% 归一化密钥，映射到0-255整数
key_seq = mod(floor(abs(key_seq)*1e6), 256);

% 图像一维化
img_vec = uint8(img(:));

% 加密（异或）
enc_vec = bitxor(img_vec, uint8(key_seq'));

% 重构加密图像
enc_img = reshape(enc_vec, M, N);

% 保存加密图像
imwrite(enc_img, 'encrypted_image.png');

% 显示加密图像
figure;
imshow(enc_img);
title('加密后的图像');
